Data for multimedia applications is generally less sequential than data of a typical data file which tends to follow a straight-line sequence from one portion or block of data in the data file to the next successive (immediately following or contiguous) portion or block of data in the data file. Instead, multimedia data, in particular, must be capable of fast direct access to any portion of a data file in response to the demands of the multimedia device, system, or user, regardless of the size of the data file.
Direct or random data access is a concept which allows a system or user to directly access a given portion of a data file based upon the known structure and size of the data file and upon the addressability of certain storage media such as system memory or magnetic disk without having to access and read the entire data file. It is for this reason that magnetic discs are often referred to as Direct Access Storage Devices (DASD) and some memory devices are referred to as Random Access Memory (RAM).
The typical storage sequence of the prior art when storing data to a magnetic disk first divides a data file into logical blocks which match the block size of the storage medium used. Then, sectors are allocated as needed by the number of logical blocks obtained. Next, the logical blocks are stored into the allocated sectors and a "mapping" is maintained correlating the logical blocks to the physical sectors. Then, when one desires to do a read of the stored data, one need merely determine which logical block contains the desired data and access the appropriate sector.
The overwhelming trend, particularly with multimedia data which oftentimes combines sound and images, is an ever increasing size of modern data files. Thus, compression of data files is becoming increasingly important.
It is typical in the art to compress an entire data file as a single unit. Then, as in the prior art method of storing uncompressed data files, one would divide the compressed data file into logical blocks. Then, sectors would be allocated as needed and the logical blocks of compressed data file would be stored into the allocated sectors.
Unfortunately, it is inefficient to read a compressed data file stored according to the known methodologies. Once a data file has been compressed and stored as a single unit then the random access capability can become lost. This is because the known structure and size of the data file has been altered by the compression process. Because one doesn't know which portion of the original uncompressed data file correlates to any portion of the stored compressed data file (since no "mapping" between uncompressed and compressed), one must retrieve and decompress the entire compressed file in order to access even a small portion of the file. Then, in order to return the compressed data file to storage, one must re-compress the entire data file and store it via the process above.
Conversely, the present invention provides for efficient allocation of, and access to, stored compressed data files.